From: Stefano Stabellini Date: Thu, 6 Nov 2014 10:41:28 +0000 (+0000) Subject: pvgrub: ignore NUL X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~4100 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=e6fa63d6cf8e79de2cfb2d428269b6d6f698c3d2;p=xen.git pvgrub: ignore NUL When using pvgrub in graphical mode with vnc, the grub timeout doesn't work: the countdown doesn't even start. With a serial terminal the problem doesn't occur and the countdown works as expected. It turns out that the problem is that when using a graphical terminal, checkkey () returns 0 instead of -1 when there is no activity on the mouse or keyboard. As a consequence grub thinks that the user typed something and interrupts the count down. To fix the issue simply ignore keystrokes returning 0, that is the NUL character anyway. Add a patch to grub.patches to do that. Signed-off-by: Stefano Stabellini Tested-by: Steven Haigh Acked-by: Samuel Thibault --- diff --git a/stubdom/grub.patches/11graphics-keyboard.diff b/stubdom/grub.patches/11graphics-keyboard.diff new file mode 100644 index 0000000000..fe17b20a6f --- /dev/null +++ b/stubdom/grub.patches/11graphics-keyboard.diff @@ -0,0 +1,13 @@ +diff --git a/stage2/stage2.c b/stage2/stage2.c +index 9d9fcc3..8353a3b 100644 +--- a/stage2/stage2.c ++++ b/stage2/stage2.c +@@ -395,7 +395,7 @@ restart: + pressed. + This avoids polling (relevant in the grub-shell and later on + in grub if interrupt driven I/O is done). */ +- if (checkkey () >= 0 || grub_timeout < 0) ++ if (checkkey () > 0 || grub_timeout < 0) + { + /* Key was pressed, show which entry is selected before GETKEY, + since we're comming in here also on GRUB_TIMEOUT == -1 and